// 1656. 设计有序流
// 有 n 个(id, value) 对， 其中 id 是 1 到 n 之间的一个整数， value 是一个字符串。 不存在 id 相同的两个(id, value) 对。

// 设计一个流， 以 任意 顺序获取 n 个(id, value) 对， 并在多次调用时 按 id 递增的顺序 返回一些值。

/**
 * @param {number} n
 */
var OrderedStream = function (n) {
  this.list = new Array(n)
  this.list[0] = null
  this.index = 1
};

/** 
 * @param {number} idKey 
 * @param {string} value
 * @return {string[]}
 */
OrderedStream.prototype.insert = function (idKey, value) {
  let ret = []
  this.list[idKey] = value
  if (idKey === this.index) {
    while (this.list[idKey]) {
      ret.push(this.list[idKey])
      idKey++
    }
    this.index = idKey
  }
  return ret
};

/**
 * Your OrderedStream object will be instantiated and called as such:
 * var obj = new OrderedStream(n)
 * var param_1 = obj.insert(idKey,value)
 */
var order = ["OrderedStream", "insert", "insert", "insert", "insert", "insert"],
  values = [
    [5],
    [3, "ccccc"],
    [1, "aaaaa"],
    [2, "bbbbb"],
    [5, "eeeee"],
    [4, "ddddd"]
  ]


  let n = 5
  var os = new OrderedStream(n)
  let i = 0
  for (let i = 1; i <= n; i++) {
    let [id, value] = values[i]
    console.log(os.insert(id, value))
  }


